/******************************************************
Cours:   LOG121
Session: A2013
Groupe:  
Projet: Laboratoire #3
etudiant(e)s: Simon Castro
			  Fredy Alexander 
			  Renaud Vincent
              
              
Professeur : 
Nom du fichier: TestDe.java
Date cree: 2013-11-11
Date dern. modif. 2013-11-11
*******************************************************
Historique des modifications
*******************************************************
2013-11-11 Version 1.0
*******************************************************/
package testsUnitaires;

import static org.junit.Assert.*;

import java.util.ArrayList;

import org.junit.Before;
import org.junit.Rule;
import org.junit.Test;
import org.junit.rules.ExpectedException;

import cadricielJeuDe.De;

/**
 * Classe de tests unitaires testant les differents membres de la classe De.
 * @author Renaud
 */
public class TestDe {

	De de1;
	De de2;
	ArrayList<Integer> faces = new ArrayList<Integer>();
	
	
	@Before
	public void aFaire() {
		for(int i=0;i<6;i++)
			faces.add(i,i+1);
		
		de1 = new De(6, faces);
		de2 = new De(6, faces);
	}
	
	/*
	 * Test accesseurs
	 */
	@Test
	public void testNbrFace() {
		assertTrue(de1.getNbrFaces() == 6 && de2.getNbrFaces() == 6);
	}
	
	@Test
	public void testGetAt() {
		assertTrue(de1.getValeurAt(0) == 1);
	}
	
	/*
	 * Tests mutateurs
	 */
	@Test
	public void testSetAt() {
		de1.setValeurAt(0, 2);
		assertTrue(de1.getValeurAt(0) == 2);
	}
	
	@Test
	public void testBrasser() {
		assertTrue(de1.brasser() > 0);
	}
	
	@Test
	public void testComparer() {
		assertTrue(de1.compareTo(de2) == 1 || de1.compareTo(de2) == -1 ||
				de1.compareTo(de2) == 0);
	}
	
	/*
	 * Test d'erreurs 
	 */
	
	@Test
	public void testNbrFaceErreur(){
		assertFalse(de1.getNbrFaces() > 6);
	}
	
	@Test
	public void testNbrFaceErreur2(){
		assertFalse(de1.getNbrFaces() < 1);
	}
	
	/*
	 * Test qu'une exception est bien levee
	 */
	@Rule
	public ExpectedException exception = ExpectedException.none();

	@Test public void testGetValeurMauvaise() throws IndexOutOfBoundsException{
		exception.expect(IndexOutOfBoundsException.class);
		de2.getValeurAt(7);
	}
}
